/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package libreriaTicket.dao;

import conexion.BD;
import conexion.SqlFormat;
import java.util.ArrayList;
import libreriaTicket.entity.Pais;
import libreriaTicket.entity.Comuna;
import libreriaTicket.entity.Region;

/**
 *
 * @author Duoc
 */
public class DaoComuna {

    public static boolean sqlInsert(Comuna comuna) {
        try {
            SqlFormat sql = new SqlFormat(SqlFormat.INSERTAR, "comuna");
           //sql.addField("id", comuna.getIdComuna());
            sql.addField("descripcion", comuna.getDescripcion());
            sql.addField("codRegion", comuna.getRegion().getIdRegion());
            
            return BD.getInstance().sqlEjecutar(sql.crearInstruccion());
            
            
            
        } catch (Exception e) {
        }
        return false;
    }

    public static boolean sqlUpdate(Comuna comuna) {
        try {

            SqlFormat sql = new SqlFormat(SqlFormat.ACTUALIZAR, "comuna");
            sql.where("id", comuna.getIdComuna());
            sql.addField("descripcion", comuna.getDescripcion());
            sql.addField("codRegion", comuna.getRegion().getIdRegion());

            
            return BD.getInstance().sqlEjecutar(sql.crearInstruccion());


        } catch (Exception e) {
        }
        return false;
    }

    public static boolean sqlDelete(Comuna comuna) {
        try {
            SqlFormat sql = new SqlFormat(SqlFormat.ELIMINAR, "comuna");
            sql.where("codRegion", comuna.getIdComuna());

            return BD.getInstance().sqlEjecutar(sql.crearInstruccion());


        } catch (Exception e) {
        }
        return false;
    }

    public static Comuna sqlSelect(Comuna comuna) {

        try {
            Comuna comuna2 = new Comuna();
            SqlFormat sql = new SqlFormat(SqlFormat.SELECCIONAR, "comuna");
            sql.where("codigo", comuna.getIdComuna());

            BD.getInstance().sqlQuery(sql.crearInstruccion());
            if (!BD.getInstance().sqlFetch()) {
                return null;
            }

            comuna2.setDescripcion(BD.getInstance().getString("descripcion"));
            comuna2.setIdComuna(BD.getInstance().getInt("codigo"));
            comuna2.setRegion(new Region(BD.getInstance().getInt("codRegion")));

            
            return comuna2;
        } catch (Exception e) {
        }
        return null;
    }

    public static ArrayList<Comuna> sqlSelectAll() {
        ArrayList<Comuna> comunas = new ArrayList<Comuna>();


        try {
            BD.getInstance().sqlQuery(SqlFormat.SelectAll("comuna"));
            while (BD.getInstance().sqlFetch()) {
                Comuna comuna = new Comuna();
                comuna.setDescripcion(BD.getInstance().getString("descripcion"));
                comuna.setIdComuna(BD.getInstance().getInt("id"));
                comuna.setRegion(new Region(BD.getInstance().getInt("idRegion")));

                comunas.add(comuna);

            }
            return comunas;
        } catch (Exception e) {
        }
        return null;
    }
    public static ArrayList<Comuna> sqlComunasByRegion(Region region){
        try {
            ArrayList<Comuna> comunas = new ArrayList<Comuna>();
            String sql = "select comuna.descripcion, comuna.codigo from comuna,region where region.codigo = comuna.codRegion "
                    + " and Region.codigo = " + region.getIdRegion();
             BD.getInstance().sqlQuery(sql);
            while (BD.getInstance().sqlFetch()) {
                Comuna comuna = new Comuna();
                comuna.setDescripcion(BD.getInstance().getString("descripcion"));
                comuna.setIdComuna(BD.getInstance().getInt("codigo"));
                comuna.setRegion(new Region(BD.getInstance().getInt("codRegion")));
                
                comunas.add(comuna);
                
            }
            return comunas;
            
            
        } catch (Exception e) {
        }
        
        return null;
    }
}
